<?php
	/**
	* Klass ASSIGNMENT VIEW - 
	* Innehåller det som ska skrivas ut och visas för användaren. Väntar på konversationer ifrån controllern.
	*/
	class AssignmentView
	{
		private $assignmentNameKey = "assignmentName";
		private $startDateKey = "startDate";
		private $endDateKey = "endDate";
		private $customerIDKey = "customerID";

		private $addAssignmentKey = "addAssignment";

		private $newCustomerKey = "newCustomer";

		const EMPTY_MESSAGE = 0;
		const EMPTY_ASSIGNMENTNAME = 1;
		const EMPTY_STARTDATE = 2;
		const EMPTY_ENDDATE = 3;
		const WRONG_FORMAT_ASSIGNMENTNAME = 4;
		const WRONG_FORMAT_STARTDATE = 5;
		const WRONG_FORMAT_ENDDATE = 6;
		const REG_SUCCESS = 7;


		//----- FUNKTION: MESSAGE HOLDER ---------------------------------------------------------------------------------------------------------------
		/**
	 	* Funktion som hanterar alla meddelanden.
		* @param array $messages Innehåller alla meddelanden.
		* @return string $message Retunerar en div med meddelanden.		
	 	*/
		public function MessageHolder($messages) {
			$message = "";

			if (count($messages) > 0) {
				$message = "<div class='alert alert-error'>";
				$message .= "<h4 class='alert-heading'>Fel</h4>";
			}

			for ($messagePosition=0; $messagePosition < count($messages); $messagePosition++) { 
				switch ($messages[$messagePosition]) {
					case self::EMPTY_MESSAGE:
						$message .= "";					
						break;
						
					case self::EMPTY_ASSIGNMENTNAME:
						$message .= "<p class='message'>Fyll i ett uppdragsnamn!</p>";					
						break;
					
					case self::EMPTY_STARTDATE:
						$message .= "<p class='message'>Fyll i ett startdatum!</p>";					
						break;
						
					case self::EMPTY_ENDDATE:
						$message .= "<p class='message'>Fyll i ett slutdatum!</p>";					
						break;
						
					case self::WRONG_FORMAT_ASSIGNMENTNAME:
						$message .= "<p class='message'>Fel format på uppdragsnamnet. Endast bokstäver!</p>";					
						break;

					case self::WRONG_FORMAT_STARTDATE:
						$message .= "<p class='message'>Fel format på startdatum!</p>";					
						break;

					case self::WRONG_FORMAT_ENDDATE:
						$message .= "<p class='message'>Fel format på slutdatum!</p>";					
						break;	

					case self::REG_SUCCESS:
						$message = "<div class='alert alert-success'>";
						$message .= "<h4 class='alert-heading'>Rätt</h4>";
						$message .= "<p class='message'>Registreringen lyckades!</p>";					
						break;

					default:					
						break;
				}
			}

			if (count($messages) > 0) {
				$message .= "</div>";
			}
			return $message;			
		}


		//----- FUNKTION: TRIED TO ADD ASSIGNMENT ------------------------------------------------------------------------------------------------------
		/**
	 	* Funktion för att kontrollera om admin har försökt att lägga till ett uppdrag.
		* @return bool true/false		
	 	*/
		public function TriedToAddAssignment()
		{
			if (isset($_POST[$this->addAssignmentKey])) {
				return true;
			}
			return false;
		}


		//----- FUNKTION: LIST ADMIN ONGOING ASSIGNMENTS -----------------------------------------------------------------------------------------------
		/**
		 * Funktion för att skriva ut alla pågående uppdrag till admin.
		 * @param
		 * @return
		 */
		public function ListAdminOngoingAssignments($assignments)
		{
			
		}


		//----- FUNKTION: LIST ADMIN COMPLETED ASSIGNMENTS ---------------------------------------------------------------------------------------------
		/**
		 * Funktion för att skriva ut alla avslutade uppdrag till admin.
		 * @param
		 * @return
		 */
		public function ListAdminCompletedAssignments($assignments)
		{
			
		}


		//----- FUNKTION: LIST CUSTOMER ONGOING ASSIGNMENTS --------------------------------------------------------------------------------------------
		/**
		 * Funktion för att skriva ut alla pågående uppdrag för en specifik kund.
		 * @param array $assignments Alla uppdrag som ska skrivas ut.
		 * @return string $returnstring Retunerar tabellen med uppdragen.
		 */
		public function ListCustomerOngoingAssignments($assignments)
		{
			$returnstring = "<table class='table table-striped'>
				<tbody>";
			for ($assignmentsPosition=0; $assignmentsPosition < count($assignments); $assignmentsPosition++) { 
				$assignmentName = $assignments[$assignmentsPosition]->assignmentName;
				$assignmentStartDate = $assignments[$assignmentsPosition]->assignmentStartDate;
				$assignmentEndDate = $assignments[$assignmentsPosition]->assignmentEndDate;
				$assignmentFinished = $assignments[$assignmentsPosition]->assignmentFinished;
				if ($assignmentFinished == 0) {
					$assignmentFinishedText = "Pågående";
				} else if ($assignmentFinished == 1) {
					$assignmentFinishedText = "Avslutad";
				}

				$returnstring .= "
					<tr>
						<td>$assignmentName</td>
						<td>$assignmentStartDate</td>
						<td>$assignmentEndDate</td>
						<td>$assignmentFinishedText</td>
					</tr>
				";
			}
			$returnstring .= "</tbody></table>";
			return $returnstring;
		}


		//----- FUNKTION: LIST CUSTOMER COMPLETED ASSIGNMENTS ------------------------------------------------------------------------------------------
		/**
		 * Funktion för att skriva ut alla avslutade uppdrag för en specifik kund.
		 * @param array $assignments Alla uppdrag som ska skrivas ut.
		 * @return string $returnstring Retunerar tabellen med uppdragen.
		 */
		public function ListCustomerCompletedAssignments($assignments)
		{
			$returnstring = "<table class='table table-striped'>
				<tbody>";
			for ($assignmentsPosition=0; $assignmentsPosition < count($assignments); $assignmentsPosition++) { 
				$assignmentName = $assignments[$assignmentsPosition]->assignmentName;
				$assignmentStartDate = $assignments[$assignmentsPosition]->assignmentStartDate;
				$assignmentEndDate = $assignments[$assignmentsPosition]->assignmentEndDate;
				$assignmentFinished = $assignments[$assignmentsPosition]->assignmentFinished;
				if ($assignmentFinished == 0) {
					$assignmentFinishedText = "Pågående";
				} else if ($assignmentFinished == 1) {
					$assignmentFinishedText = "Avslutad";
				}

				$returnstring .= "
					<tr>
						<td>$assignmentName</td>
						<td>$assignmentStartDate</td>
						<td>$assignmentEndDate</td>
						<td>$assignmentFinishedText</td>
					</tr>
				";	                
			}
			$returnstring .= "</tbody></table>";
			return $returnstring;
		}

		//----- FUNKTION: DO CREATE ASSIGNMENT --------------------------------------------------------------------------------------------------------- 
		/**
		 * Funktion för att skapa formuläret för att lägga till ett nytt uppdrag.
		 * @param string $message Innehåller meddelanden.
		 * @param string $existingCustomersDropDown Innehåller HTML-koden för dropdownen med de kunderna som finns i databasen.
		 */
		public function DoCreateAssignment($message, $existingCustomersDropDown)
		{
			// Variablar för att spara ner den infromationen som admin redan har skrivit in. Om något skulle gå fel vid in registreringen.
			$prev_assignmentname = $this->GetAssignmentName();
			$prev_startdate = $this->GetStartDate();
			$prev_enddate = $this->GetEndDate();

			return " 
				$message
				<h3>Registrera ett uppdrag:</h3>

 				<form id='createAssignmentForm' method='POST'>					 			
		 			
		 			<div id='createAssignmentInput'>			 				
		 				<div id='user'>
			 				<lable for='$this->assignmentNameKey'>Uppdragsnamn: </lable>
				 			<input name='$this->assignmentNameKey' type='text' id='' class='orig' value='$prev_assignmentname'>
			 			</div>

			 			<div id='pass'>
			 				<lable for='$this->startDateKey'>Startdatum: </lable>					 			
			 				<input name='$this->startDateKey' type='date' id='' class='orig' value='$prev_startdate'>				 			
		 				</div>

			 			<div id='Rpass'>
			 				<lable for='$this->endDateKey'>Slutdatum: </lable>					 			
			 				<input name='$this->endDateKey' type='date' id='' class='orig' value='$prev_enddate'>				 			
		 				</div>	 				
	 				</div>			 		
	 				
	 				<div id='chooseCustomerContainer'>
	 					<h3>Välj kund:</h3> 				
	 					<div id='customerdropdown'>
	 						<lable>Kund:</lable>
	 						$existingCustomersDropDown
 						</div>
						
						<a href='newCustomer.php' id='cccinput1' class='btn btn-info'>Skapa ny kund</a>
						
						<input id='cccinput2' name='$this->addAssignmentKey' type='submit' value='Lägg till uppdrag' class='btn btn-warning'>
					</div>
 				</form>
			";
		}


		//----- FUNKTION: DO EXISTING CUSTOMER CHOICE DROP DOWN ----------------------------------------------------------------------------------------
		/**
		 * Funktion för att skriva ut en drop down med alla de inlagde kunderna.
		 * @param array $customers Innehåller alla kunderna som finns i databasen.
		 * @return string $returnstring Retunerar en dropdown.
		 */
		public function DoExistingCustomerChoiceDropDown($customers)
		{
			$returnString = "<select name='$this->customerIDKey'>";
			for ($i=0; $i < count($customers); $i++) {
				$customerID = $customers[$i]->customerID;
				$name = $customers[$i]->name; 
				$returnString .= "<option value='$customerID'>$name</option>";
			}
			$returnString .= "</select>";

			return $returnString;
		}


		//----- FUNKTION: GET ASSIGNMENT NAME ----------------------------------------------------------------------------------------------------------
		/**
		 * Funktion för hämta ut uppdrags namnet.
		 * @return string Retunerar ett uppdrags namn.
		 * @return bool true/false
		 */
		public function GetAssignmentName()
		{
			if (isset($_POST[$this->assignmentNameKey])) {
				return $_POST[$this->assignmentNameKey];
			} else {
				return false;
			}
		}


 		//----- FUNKTION: GET START DATE ---------------------------------------------------------------------------------------------------------------
		/**
		 * Funktion för att hämta startdatumet.
		 * @return string Retunerar ett startdatum.
		 * @return bool true/false
		 */
		public function GetStartDate()
		{
			if (isset($_POST[$this->startDateKey])) {
				return $_POST[$this->startDateKey];
			} else {
				return false;
			}
		}


		//----- FUNKTION: GET END DATE -----------------------------------------------------------------------------------------------------------------
		/**
		 * Funktion för att hämta slutdatumet.
		 * @return string Retunerar ett slutdatum.
		 * @return bool true/false
		 */
		public function GetEndDate()
		{
			if (isset($_POST[$this->endDateKey])) {
				return $_POST[$this->endDateKey];
			} else {
				return false;
			}
		}


		//----- FUNKTION: GET CUSTOMERID ---------------------------------------------------------------------------------------------------------------
		/**
		 * Funktion för att hämta en specifik kunds ID.
		 * @return string Retunerar ett kund ID.
		 * @return bool true/false
		 */
		public function GetCustomerID()
		{
			if (isset($_POST[$this->customerIDKey])) {
				return $_POST[$this->customerIDKey];
			} else {
				return false;
			}
		}
	}
?>